﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AnalisisDeRiesgosConfiguration.Exceptions;
using System.Text.RegularExpressions;

namespace AnalisisDeRiesgosConfiguration.Model
{
    class Management
    {
        public string Name { get; set; }
        public string CI { get; set; }

        public Management()
        {
            Name = "";
            CI = "";
        }

        public void Validate()
        {
            ValidateEmptyStrings();
            ValidateLenths();
            ValidateRegularExpressions();
        }

        private void ValidateRegularExpressions()
        {
            if (!Regex.Match(Name, @"^[a-zA-Z0-9 \(\)ñÑ\-.,áéíóúÁÉÍÓÚ]+$").Success)
                throw new RegisterManagementException("El nombre de la jefatura/gerencia solo debe ser solo letras o números");
            if (!Regex.Match(CI, @"^\d+$").Success)
                throw new RegisterManagementException("El CI solo puede ser digitos numericos");
        }

        private void ValidateLenths()
        {
            if (Name.Length > 50)
                throw new RegisterManagementException("El Nombre de la Gerencia/Jefatura no puede tener mas de 50 caracteres");
            if (CI.Length > 10)
                throw new RegisterManagementException("El CI no puede tener mas de 10 dígitos");
        }

        private void ValidateEmptyStrings()
        {
            if (String.IsNullOrEmpty(Name))
                throw new RegisterManagementException("El nombre de la Gerencia/Jefatura no puede ser vacio");
            if (String.IsNullOrEmpty(CI))
                throw new RegisterManagementException("El CI no puede estar vacio");
        }
    }
}
